package pacoteDao;

import java.sql.*;
import java.util.*;
import projetofinal.ConnectionFactory;
import projetofinal.Serie;

public class SerieDAO {

    private ConnectionFactory conexao = new ConnectionFactory();
    private Connection connection;
    String query;

    public SerieDAO() throws SQLException {
        if (connection == null || connection.isClosed()) {
            this.connection = conexao.getConnection();
        }
    }

    public boolean insert(Serie serie) throws SQLException {

        query = "insert into Serie(id,numero,totalaluno) values (" + serie.getId() + ",'" + serie.getNumero() + "'," + serie.getTotalaluno() + ")";
        Integer linha = conexao.executarNoQuery(query);

        conexao.close();
        return linha > 0;

    }

    public boolean update(Serie serie) throws SQLException {

        query = "update Serie set numero = '" + serie.getNumero() + "', totalaluno = " + serie.getTotalaluno() + " where id = " + serie.getId();
        Integer linha = conexao.executarNoQuery(query);

        conexao.close();
        return linha > 0;

    }

    public boolean delete(Serie serie) throws SQLException {

        query = "delete from Serie where id = " + serie.getId();
        int linhas = conexao.executarNoQuery(query);

        conexao.close();
        return linhas > 0;

    }

    public List<Serie> consultar() throws SQLException {

        query = "select * from Serie ";
        ResultSet rset = conexao.executar(query);

        List<Serie> series = new ArrayList<Serie>();
        while (rset.next()) {
            Serie serie = new Serie();
            serie.setId(rset.getInt(1));
            serie.setNumero(rset.getString(2));
            serie.setTotalaluno(rset.getInt(3));
            series.add(serie);
        }

        conexao.close();
        return series;

    }

    public Serie getById(Integer id) throws SQLException {

        query = "select * from Serie where id = " + id;
        ResultSet rs = conexao.executar(query);

        Serie serie = null;
        if (rs.next()) {
            serie = new Serie();
            serie.setId(rs.getInt(1));
            serie.setNumero(rs.getString(2));
            serie.setTotalaluno(rs.getInt(3));
        }

        conexao.close();
        return serie;
    }

    public Serie getByNumero(String numero) throws SQLException {

        query = "select * from Serie where numero = '" + numero + "'";
        ResultSet rs = conexao.executar(query);

        Serie serie = null;
        if (rs.next()) {
            serie = new Serie();
            serie.setId(rs.getInt(1));
            serie.setNumero(rs.getString(2));
            serie.setTotalaluno(rs.getInt(3));
        }

        conexao.close();
        return serie;
    }
}
